As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems are often used to, or used in connection with, storage of data. Stored data may include one or more objects, wherein each object may include an item of data, including without limitation, a text file, a video file, an image file, an audio file, an executable file, any other type of file, or any portion thereof. In some instances, a particular object may be designated as immutable, meaning the particular object is not to be modified once created. An example of immutable data may be a digital file representing a patient x-ray—once the x-ray has been taken, the x-ray should not be modified in the patient's health records.
Various types of metadata may be associated with a particular object. Generally speaking, metadata is data about other data. With respect to the patient x-ray example above, metadata associated with the data object representing a patient x-ray may include the patient's name, address, age, date of birth, social security number, vital statistics, and/or other information.
Despite an object being immutable, certain metadata associated with an object may itself be mutable (e.g., metadata which can be modified). For example, in the example of a patient x-ray above, a patient's address, vital statistics, and other information may change over time. Accordingly, it may be desired to supplement the metadata with such new information without modifying the immutable object to which the metadata relates. In addition, it may also be desired to supplement existing metadata with the new metadata, so that historical metadata may be maintained (e.g., for auditing, compliance or other purposes).
In many traditional approaches, addition of metadata to existing immutable objects was accomplished by building indexes of pointers to metadata which are stored outside of the object data store. This leads to expense and complexity. In addition, such approaches may prevent users from building intelligent search and indexing capability across stored objects, because immutable data is split from its associated metadata.
In other traditional approaches for adding metadata to existing immutable objects, an application would need to read the existing object, append the new metadata to the object, and re-write the object back to the data store, in which case the object would likely be assigned a new unique identifier (e.g., a new universally unique identifier or UUID). The application would then need to create coherent write updates and associate the cached data across all instances on the distributed application. In addition, because the object is rewritten, there may be no assurance that the data has not changed.